import 'package:flutter_09_game/config/app_config.dart';
import 'package:flutter_09_game/generated/locales.g.dart';

class UtilsTime {
  static String depositFormatTime(String? timeStr) {
    if (timeStr == null || timeStr.isEmpty) return '';

    try {
      final dateTime = DateTime.parse(timeStr).toLocal();
      return '${dateTime.month.toString().padLeft(2, '0')}/${dateTime.day.toString().padLeft(2, '0')} ${dateTime.hour.toString().padLeft(2, '0')}:${dateTime.minute.toString().padLeft(2, '0')}:${dateTime.second.toString().padLeft(2, '0')}';
    } catch (e) {
      return '';
    }
  }

  static String ymdFormatTime(String? timeStr) {
    if (timeStr == null || timeStr.isEmpty) return '';

    try {
      final dateTime = DateTime.parse(timeStr).toLocal();
      // ${dateTime.year}-
      return '${dateTime.month.toString().padLeft(2, '0')}-${dateTime.day.toString().padLeft(2, '0')} ${dateTime.hour.toString().padLeft(2, '0')}:${dateTime.minute.toString().padLeft(2, '0')}:${dateTime.second.toString().padLeft(2, '0')}';
    } catch (e) {
      return '';
    }
  }

  // static String timestampToTimeString(int? timestamp) {
  //   if (timestamp == null) {
  //     return '';
  //   }
  //   // DateTime.fromMillisecondsSinceEpoch(millisecondsSinceEpoch)
  //   DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(timestamp * 1000);
  //   return '${dateTime.year}-${dateTime.month.toString().padLeft(2, '0')}-${dateTime.day.toString().padLeft(2, '0')}';
  // }

  // static String timeCountDownByMs(int? ms, {String? defindStr}) {
  //   if (ms == null) {
  //     return '';
  //   }
  //
  //   DateTime targetTime = DateTime.fromMillisecondsSinceEpoch(ms);
  //   return _formatRelativeTime(targetTime);
  // }

  // static String timeCountDownByMsForBackpack(int? ms, {String? defindStr}) {
  //   //背包显示 x天x时
  //   if (ms == null) {
  //     return '';
  //   }
  //   int secondsTotal = (ms - UtilsTime.getServiceTimestamp());
  //
  //   if (secondsTotal <= 0) {
  //     return defindStr ?? '00:00';
  //   }
  //   // int days = secondsTotal ~/ (60 * 60 * 24);
  //   int hours = (secondsTotal ~/ 3600) % 24;
  //   int minutes = secondsTotal % 3600 ~/ 60;
  //   int seconds = secondsTotal % 60;
  //
  //   if (hours > 0) {
  //     return '${hours.toString().padLeft(2, '0')}:${minutes.toString().padLeft(2, '0')}:${seconds.toString().padLeft(2, '0')}';
  //   } else {
  //     return '${minutes.toString().padLeft(2, '0')}:${seconds.toString().padLeft(2, '0')}';
  //   }
  // }

  // static String timeCountDown(int? secondsTotal) {
  //   //背包显示 x天x时
  //   if (secondsTotal == null) {
  //     return '';
  //   }
  //   // int secondsTotal = (ms - UtilsTime.getServiceTimestamp());
  //
  //   // int days = secondsTotal ~/ (60 * 60 * 24);
  //   int hours = (secondsTotal ~/ 3600) % 24;
  //   int minutes = secondsTotal % 3600 ~/ 60;
  //   int seconds = secondsTotal % 60;
  //
  //   if (hours > 0) {
  //     return '${hours.toString().padLeft(2, '0')}:${minutes.toString().padLeft(2, '0')}:${seconds.toString().padLeft(2, '0')}';
  //   } else {
  //     return '${minutes.toString().padLeft(2, '0')}:${seconds.toString().padLeft(2, '0')}';
  //   }
  // }
  //
  // static String timeCountDownPkByMs(int? secondsTotal) {
  //   if (secondsTotal == null) {
  //     return '';
  //   }
  //   // int secondsTotal = ms ;
  //   // int secondsTotal = (ms - UtilsTime.getServiceTimestamp());
  //   if (secondsTotal <= 0) {
  //     return '00:00';
  //   }
  //
  //   int minutes = secondsTotal % 3600 ~/ 60;
  //   int seconds = secondsTotal % 60;
  //   return '${minutes.toString().padLeft(2, '0')}:${seconds.toString().padLeft(2, '0')}';
  // }

  // static int getServiceTimestamp() {
  //   return (DateTime.now().millisecondsSinceEpoch ~/ 1000) +
  //       AppConfig.serviceDifference;
  // }

  // static void resetServiceTimestamp(int timeS) {
  //   AppConfig.serviceDifference =
  //       timeS - DateTime.now().millisecondsSinceEpoch ~/ 1000;
  // }

  // static String getYMDbySecond(int second) {
  //   DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(second * 1000);
  //   String formattedDate = "${dateTime.year}-${dateTime.month}-${dateTime.day}";
  //   return formattedDate;
  // }

  // static int timeStringToSeconds(String timeString) {
  //   List<String> parts = timeString.split(':');
  //   if (parts.length != 3) {
  //     return 0;
  //   }
  //   int hours = int.parse(parts[0]);
  //   int minutes = int.parse(parts[1]);
  //   int seconds = int.parse(parts[2]);
  //   return hours * 3600 + minutes * 60 + seconds;
  // }

  // static String convertToLocalTime(String timeString) {
  //   // 解析带时区的时间
  //   DateTime? dateTime = DateTime.tryParse(timeString);
  //   if (dateTime == null) {
  //     return '';
  //   }
  //   // 转换成本地时区
  //   DateTime localTime = dateTime.toLocal();
  //
  //   // 格式化输出（可改成你需要的格式）
  //   return "${localTime.year}-${localTime.month.toString().padLeft(2, '0')}-${localTime.day.toString().padLeft(2, '0')} "
  //       "${localTime.hour.toString().padLeft(2, '0')}:${localTime.minute.toString().padLeft(2, '0')}:${localTime.second.toString().padLeft(2, '0')}";
  // }

  /// 私有方法：统一的相对时间格式化逻辑
  /// 返回格式如: "刚刚", "5分钟前", "昨天 14:30", "2025-08-21 11:09"
// static String _formatRelativeTime(DateTime targetTime,
//     {bool showHour = false}) {
//   DateTime now = DateTime.now();
//   Duration difference = now.difference(targetTime);
//
//   if (difference.inMinutes < 1) {
//     return LocaleKeys.justNow.tr;
//   } else if (difference.inHours < 1) {
//     return '${difference.inMinutes}${LocaleKeys.minutesAgo.tr}';
//   } else if (difference.inDays == 0) {
//     return '${difference.inHours}${LocaleKeys.hoursAgo.tr}';
//   } else if (difference.inDays == 1) {
//     return '${LocaleKeys.yesterday.tr} ${targetTime.hour.toString().padLeft(2, '0')}:${targetTime.minute.toString().padLeft(2, '0')}';
//   } else {
//     return '${targetTime.year}-${targetTime.month.toString().padLeft(2, '0')}-${targetTime.day.toString().padLeft(2, '0')}${showHour ? " ${targetTime.hour.toString().padLeft(2, '0')}:${targetTime.minute.toString().padLeft(2, '0')}" : ''}';
//     // ${targetTime.hour.toString().padLeft(2, '0')}:${targetTime.minute.toString().padLeft(2, '0')}
//   }
// }

  /// 处理ISO 8601格式时间字符串并返回相对时间显示
  /// 支持格式如: "2025-08-21T11:09:08.4611+08:00"
  /// 返回格式如: "刚刚", "5分钟前", "昨天 14:30", "2025-08-21 11:09"
// static String formatRelativeTimeFromISO(String? isoString,
//     {bool showHour = false}) {
//   if (isoString == null || isoString.isEmpty) {
//     return '';
//   }
//
//   try {
//     // 解析ISO 8601格式的时间字符串
//     DateTime? dateTime = DateTime.tryParse(isoString);
//     if (dateTime == null) {
//       return '';
//     }
//
//     // 转换为本地时间并使用统一的格式化逻辑
//     DateTime localTime = dateTime.toLocal();
//     return _formatRelativeTime(localTime, showHour: showHour);
//   } catch (e) {
//     // 解析失败时返回空字符串
//     return '';
//   }
// }
}
